﻿using Newtonsoft.Json;

namespace Fadada.FASC.SDK.DotNetCore.Model
{
    public class RespUserGetIdentityInfo
    {
        /// <summary>
        /// 用户在应用系统中的唯一标识。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "openUserId", Required = Required.Always)]
        public string OpenUserId { get; set; }

        /// <summary>
        /// 实名认证状态：unidentified: 未认证(如果尚未授权绑定帐号，则当做未认证)identified: 已认证且有效
        /// ident_invalid：认证失效(注意检查认证中心中的状态，认证可能失效/如过期)该参数非常重要，因为只有有效实名认证的用户方可使用法大大电子签服务。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "identStatus", Required = Required.Always)]
        public string IdentStatus { get; set; }

        /// <summary>
        /// 用户的实名身份信息。只有identStatus=identified时，才返回该参数和以下参数。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "userIdentInfo", Required = Required.AllowNull)]
        public UserIdentInfo UserIdentInfo { get; set; }

        /// <summary>
        /// 用户的补充信息。只有identStatus=identified时，才返回该参数和以下参数。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "userIdentInfoExtend", Required = Required.AllowNull)]
        public UserInfoExtend UserIdentInfoExtend { get; set; }

        /// <summary>
        /// 用户实名认证时所选择的认证方式：mobile: 实名手机号认证(该方案校验的是用户在电信运营商绑定的真实姓名、身份证号码、手机号及对应的短信验证码)
        /// face: 人脸识别认证(该方案校验的是用户的真实姓名、身份证号码和人脸比对)bank: 个人银行卡认证(该方案校验的是用户在银行绑定的真实姓名、身份证号码、银行卡卡号、预留在银行的手机号及对应的短信验证码)
        /// offline: 人工审核认证(该方案主要为特殊人群提供的人工审核通道，如部分用户因为特殊原因，无法在其他方案下完成认证。例如：手机不可用、人脸比对不成功、外国人等)。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "identMethod", Required = Required.AllowNull)]
        public string IdentMethod { get; set; }

        /// <summary>
        /// 认证提交时间。格式为：Unix标准时间戳，精确到毫秒。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "identSubmitTime", Required = Required.AllowNull)]
        public string IdentSubmitTime { get; set; }

        /// <summary>
        /// 认证通过时间。以了解最后一次认证通过的时间 (有的业务要求用户在一定周期内重新认证)。格式为：Unix标准时间戳，精确到毫秒。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "identSuccessTime", Required = Required.AllowNull)]
        public string IdentSuccessTime { get; set; }
    }
}